package gyb.rasa.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import gyb.rasa.entity.Hot;
import com.baomidou.mybatisplus.extension.service.IService;
import gyb.rasa.entity.Ip;
import gyb.rasa.entity.MessageReceived;
import gyb.rasa.entity.vo.EntityQuestions;
import gyb.rasa.entity.vo.HotQuestion;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 郜宇博
 * @since 2023-04-20
 */
public interface HotService extends IService<Hot> {

    /**
     * 增加热度
     * @param entityName 实体名
     */
    void increaseHot(String entityName);

    /**
     * 获取热门问答
     * @param countEntity 实体数量
     * @param countQuestion 问答数量
     * @return 热门问答列表
     */
    List<HotQuestion> getHotQuestions(Integer countEntity,Integer countQuestion);

    /**
     * 获取热门实体
     * @param count 数量
     * @return 热门实体列表
     */
    List<Hot> getHotEntity(Integer count);

    /**
     * 根据实体名获取热门问答
     * @param entitys 实体名
     * @param countQuestion 问答数量
     * @return 热门实体、问答列表
     */
    Map<String, List<HotQuestion>> getHotQuestionsByEntity(String entitys, Integer countQuestion);

    /**
     * 根据实体名获取热门问答
     * @param entity 实体名
     * @param countQuestion 问答数量
     * @return 热门实体、问答列表
     */
    EntityQuestions getHotQuestionsBySingleEntity(String entity, Integer countQuestion);

    /**
     * 将MessageReceive转换为Question
     * @param messageReceived MessageReceive
     * @return Question格式
     */
    public HotQuestion transformToHotQes(MessageReceived messageReceived);

    /**
     * 分页获取Hot
     * @param current 当前页
     * @param limit 最大数量
     * @return hotList
     */
    IPage<Hot> getHotByPage(Long current, Long limit);
}
